pic_set_irq(pic, pt->irq, 1);
}
- callback_irq = v->domain->arch.hvm_domain.params[HVM_PARAM_CALLBACK_IRQ];
- if ( callback_irq != 0)
- pic_set_xen_irq(pic, callback_irq, local_events_need_delivery());
+ if (v->vcpu_id == 0) {
+ callback_irq =
+ v->domain->arch.hvm_domain.params[HVM_PARAM_CALLBACK_IRQ];
+ if ( callback_irq != 0)
+ pic_set_xen_irq(pic, callback_irq, local_events_need_delivery());
+ }
if ( cpu_has_pending_irq(v) )
intr_vector = cpu_get_interrupt(v, &intr_type);
struct hvm_domain *plat=&v->domain->arch.hvm_domain;
struct periodic_time *pt = &plat->pl_time.periodic_tm;
struct hvm_virpic *pic= &plat->vpic;
- int callback_irq;
unsigned int idtv_info_field;
unsigned long inst_len;
int has_ext_irq;
pic_set_irq(pic, pt->irq, 1);
}
- callback_irq = v->domain->arch.hvm_domain.params[HVM_PARAM_CALLBACK_IRQ];
- if ( callback_irq != 0 )
- pic_set_xen_irq(pic, callback_irq, local_events_need_delivery());
+ if (v->vcpu_id == 0) {
+ int callback_irq;
+ callback_irq =
+ v->domain->arch.hvm_domain.params[HVM_PARAM_CALLBACK_IRQ];
+ if ( callback_irq != 0 )
+ pic_set_xen_irq(pic, callback_irq, local_events_need_delivery());
+ }
has_ext_irq = cpu_has_pending_irq(v);